<?php
/**
 * Created by b17
 * 2/13/12 5:49 PM
 */

namespace Managers;

class Utils
{
    const DATETIME_FORMAT = 'Y-m-d H:i';

    const DATE_FORMAT = 'Y-m-d';

    /**
     * Возвращает пути относительно папки public.
     *
     * @static
     * @param $url
     * @return mixed
     */
    public static function getRelUrl($url)
    {
       return preg_replace('/.*public/', '', $url);
    }

    /**
     * Изменяет размер рисунка.
     *
     * @static
     * @param $file
     * @param $width
     * @param null $height
     * @throws \Exception
     */
    public static function resizeImage($file, $width, $height = null)
    {
        self::throwExtensionError();
        $im = new \Imagick($file);
        $im->thumbnailimage($width, $height);
        $im->writeimage($file);
    }

    /**
     * Выполняет поворот рисунка.
     *
     * @static
     * @param $file
     * @param $degrees
     */
    public static function rotateImage($file, $degrees)
    {
        self::throwExtensionError();
        $im = new \Imagick($file);
        $im->rotateImage(new \ImagickPixel('none'), $degrees);
        $im->writeimage($file);
    }

    /**
     * Кидает исключение, если дополнение не подгруженно.
     *
     * @static
     * @throws \Exception
     */
    private static function throwExtensionError()
    {
        if (!extension_loaded('imagick')) {
            throw new \Exception('Image magic is not installed or activated.');
        }
    }

    /**
     * Заменяет 2 и больше слеша на 1.
     *
     * @param $path
     * @return mixed
     */
    public static function sanitizePath($path)
    {
        return preg_replace('/\/{2,}/', '/', $path);
    }

    public static function rebuildArray(array $values)
    {
        return array_map(function ($value)
        {
            return $value['id'];
        }, $values);
    }

    public static function sphinxSort(array $items, array $matches)
    {
        $result = array();
        foreach ($matches as $match) {
            foreach ($items as $item) {
                if ($item['id'] == $match['id']) {
                    $result[] = $item;
                }
            }
        }
        return $result;
    }
}
